#ifndef __ATMOS_NetworkManagerClient_h__
#define __ATMOS_NetworkManagerClient_h__

#include "ATMOS_Common.h"
#include "ATMOS_NetworkManager.h"

namespace ATMOS {	

//! The client-oriented implementation of the NetworkManager
/*!
	The NetworkManagerClient provides a network interface for applications that fill a client
	role in the network structure.

	Client applications can react to network events by using a PacketListener-derived custom
	class, or by inheriting from the NetworkManagerClient and overriding the available virtual
	functions.  Note that such subclasses would also likely override 
	NetworkManager::onAtmosPacket.
*/
class AtmosExport NetworkManagerClient : public NetworkManager
{
public:
	NetworkManagerClient();
	~NetworkManagerClient();

	//! get the GUID of the connected server (if any)
	const std::string &getServerGUID() const;

	//! initialize the client network manager and connect to the server
	virtual void initialize( const NetworkConnectionInfo &info );
		
protected:
	std::string mServerGUID;
};

} // end namespace ATMOS

#endif